#pragma once
 
#include <iostream>
#include <vector>
#include <functional>
 
typedef std::function<void()> func;    // 类型重定义
 
std::vector<func> trace_back;   // 回调函数
std::vector<std::string> desc;  // 任务编号及对应说明
 
void execuleUrl()
{
    std::cout << "execuleUrl" << std::endl;
}
 
void save()
{
    std::cout << "save data" << std::endl;
}
 
void visitSQL()
{
    std::cout << "visit SQL" << std::endl;
}
 
void online()
{
    std::cout << "take online" << std::endl;
}
 
void load()
{
    trace_back.emplace_back(execuleUrl);
    desc.emplace_back("execuleUrl");
 
    trace_back.emplace_back(save);
    desc.emplace_back("save data");
 
    trace_back.emplace_back(visitSQL);
    desc.emplace_back("visit SQL");
 
    trace_back.emplace_back(online);
    desc.emplace_back("take online");
}
 
void show()
{
    int count = 0;
 
    for(const auto& msg : desc)
    {
        std::cout << count << ": " << msg << std::endl;
        ++count;
    }
}
 
int handlerSize()
{
    return trace_back.size();
}
 